
// 获取token有效期的函数

const NodeCache = require( "node-cache" );

function createNodeCache() {
  const myCache = new NodeCache( { stdTTL: 100, checkperiod: 120 } );

  function get( key ) {
    if(typeof key === 'string') return myCache.mget([ key ]); 
    else if(Array.isArray(key)) return myCache.mget(key)
    return undefined
  }
  /**
   * @param { object | array } params
   * @param { string } params.key: 键
   * @param { any } params.value: 值
   * @param { number } params.ttl : 过期时间
   * @returns { boolean }
  */
  function set(params = {} ) {
    if(Array.isArray(params)) return myCache.mset(params);
    else if ( Object.prototype.toString.call(params).match(/\[object (.*?)\]/)[1].toLowerCase() === 'object') {
      return myCache.mset([params]);
    }//////)/) === '[object Object]') {
    return undefined
  }

  return {
    get,
    set
  }
}
const tokenIDCache = createNodeCache();



function getTokenExpirationTime() {
  return 12 * 60 * 60 ; // xxx 秒
}

// token最大允许更新时间
function getTokenMaxAge() {
  return 30 * 60; // 5小时
}

module.exports = {
  getTokenExpirationTime,
  getTokenMaxAge,
  tokenIDCache
};


